﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.Runtime.InteropServices;

namespace SeriesTheque.DataService
{
    // REMARQUE : vous pouvez utiliser la commande Renommer du menu Refactoriser pour changer le nom d'interface "IService1" à la fois dans le code et le fichier de configuration.
    [ServiceContract]

    public interface IService1
    {
        // Utilisez un contrat de données (comme illustré dans l'exemple ci-dessous) pour ajouter des types composites aux opérations de service.
        // Vous pouvez ajouter des fichiers XSD au projet. Une fois le projet généré, vous pouvez utiliser directement les types de données qui y sont définis, avec l'espace de noms "SeriesTheque.DataService.ContractType".

        [OperationContract]
        List<User> GetAllUsers();

        [OperationContract]
        List<User> GetAllUsersByEtat([Optional]Boolean enabled);

        [OperationContract]
        List<Serie> GetAllSeries();

        [OperationContract]
        List<Serie> GetAllSeriesByEtat(Boolean enabled);

        [OperationContract]
        List<Serie> GetSeriesByUser(string userLogin);

        [OperationContract]
        List<Serie> GetSeriesByUserByEtat(string userLogin, Boolean enabled);

        [OperationContract]
        List<Episode> GetEpisodesBySeason(int idseason);

        [OperationContract]
        List<Episode> GetEpisodesBySeasonByEtat(int idserie, Boolean enabled);

        [OperationContract]
        List<Season> GetSeasonBySerie(int serieId);

        [OperationContract]
        List<Season> GetSeasonBySerieAndEtat(int serieId, Boolean enabled);

        [OperationContract]
        Boolean AddUser(string login, string password);

        [OperationContract]
        Boolean ChangePasswordUser(string Login, string newPassword);

        [OperationContract]
        Boolean ChangeEtatUser(string Login, Boolean enable);

        [OperationContract]
        Boolean IsUserValid(string login, string password);

        [OperationContract]
        List<Episode> GetEpisodesBySerie(int idserie);

        [OperationContract]
        List<Episode> GetEpisodesBySerieByEtat(int idserie, Boolean enabled);

        [OperationContract]
        Boolean AddSerie(int idserie, string seriename, string userlogin);

        [OperationContract]
        Boolean ChangeEtatSerie(int idserie, bool etat);

        [OperationContract]
        Boolean AddSeason(int idseason, int idserie);

        [OperationContract]
        Boolean IsUserExist(string Login);

        [OperationContract]
        Boolean IsSerieExist(int serieId);

        [OperationContract]
        Boolean IsSeasonExist(int seasonId);

        [OperationContract]
        Boolean IsEpisodeExist(int episodeId);

        [OperationContract]
        Boolean AddEpisode(int idepisode, string episodenumber, int idseason);

        [OperationContract]
        Boolean ChangeEtatEpisode(int idepisode, bool etat);

        [OperationContract]
        Boolean ChangeEtatSeason(int idseason, bool etat);

       

    }
}
